package com.campus;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;

import java.util.HashMap;
import java.util.Map;

//代码生成器
public class auto {
    public static void main(String[] args) {
        InjectionConfig ic;
        ConfigBuilder cb; //核心配置
        DataSourceConfig dsc1;//数据库配置
        GlobalConfig gc1;//全局配置
        PackageConfig pc1;//跟包相关的配置项
        StrategyConfig sc1;//策略配置项
        TemplateConfig tc;//模板路径配置项
        AbstractTemplateEngine ate;//模板引擎抽象类


        //构建代码自动生成器
        AutoGenerator mpg = new AutoGenerator();

        //配置策略
        GlobalConfig gc = new GlobalConfig();
        String property = System.getProperty("user.dir");//当前系统目录
        gc.setOutputDir(property + "/src/main/java");
        gc.setAuthor("Rin");//作者
        gc.setOpen(false);//是否打开文件夹
        gc.setFileOverride(true);//是否覆盖
        gc.setServiceImplName("%sServiceImpl");//添加后戳
        gc.setServiceName("%ssService");
        gc.setIdType(IdType.AUTO);//设置主键id
        gc.setDateType(DateType.ONLY_DATE);//date类型
        gc.setSwagger2(true);//swagger注解


        mpg.setGlobalConfig(gc);
        //设置数据源
        DataSourceConfig dsc = new DataSourceConfig();

        dsc.setUrl("jdbc:mysql://8.131.94.240:3306/school_bully?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC");
        dsc.setUsername("root");
        dsc.setPassword("ysh200112..");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setDbType(DbType.MYSQL);
        mpg.setDataSource(dsc);

//包的位置
        PackageConfig config = new PackageConfig();
//
//        config.setModuleName("school");//模块名
//        config.setParent("com.mybatis_plus_auto.demo");
        /**
         * config.setPathInfo(map);如果使用了这个方法，其他配置的模板的包名模块名不会生效
         */
//        config.setEntity("pojo");
//        config.setMapper("mapper");
//        config.setService("service");
        config.setParent("com.campus");
//
//        config.setController("controller");
        Map<String, String> map = new HashMap<>();

//        map.put("xml_path", "E:\\加密\\campus - 副本\\src\\main\\resources\\mybatis\\mapper");
//        map.put("service_path", "E:\\加密\\campus - 副本\\src\\main\\java\\com\\campus\\app\\service");
//        map.put("service_impl_path", "E:\\加密\\campus - 副本\\src\\main\\java\\com\\campus\\app\\service\\impl");
//        map.put("entity_path", "E:\\加密\\campus - 副本\\src\\main\\java\\com\\campus\\commons\\pojo");
//        map.put("mapper_path", "E:\\加密\\campus - 副本\\src\\main\\java\\com\\campus\\app\\mapper");
//        map.put("controller_path", "E:\\加密\\campus - 副本\\src\\main\\java\\com\\campus\\web\\controller");

//        config.setPathInfo(map);
        mpg.setPackageInfo(config);


        //策略配置
        StrategyConfig strategy = new StrategyConfig();

        strategy.setInclude("de_score");
//        strategy.setExclude("");
        strategy.setNaming(NamingStrategy.underline_to_camel);//名字转驼峰
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库列转驼峰
        strategy.setEntityLombokModel(true);//开启lombok
        strategy.setRestControllerStyle(true);//开启rest风格
        strategy.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2
        //自动填充配置 略
        mpg.setStrategy(strategy);


        mpg.execute();//执行
    }
}
